home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / emula / arosdv19.lha / AROS / config / dummy / dispatch.c < prev    next >
C/C++ Source or Header  |  1996-10-24  |  1KB  |  47 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: dispatch.c,v 1.3 1996/10/19 17:07:22 aros Exp $
  4.     $Log: dispatch.c,v $
  5.     Revision 1.3  1996/10/19 17:07:22  aros
  6.     Include <aros/machine.h> instead of machine.h
  7.  
  8.     Revision 1.2  1996/08/01 17:41:00  digulla
  9.     Added standard header for all files
  10.  
  11.     Desc:
  12.     Lang:
  13. */
  14. #include <exec/execbase.h>
  15. #include <clib/exec_protos.h>
  16. #include <aros/machine.h>
  17.  
  18. APTR sp;
  19.  
  20. void dispatch(struct ExecBase *SysBase)
  21. {
  22.     struct Task *me;
  23.     struct List *list;
  24.     me=SysBase->ThisTask;
  25.     me->tc_SPReg=sp;
  26.     if(me->tc_Flags&TF_SWITCH)
  27.         me->tc_Switch();
  28.     me->tc_IDNestCnt=SysBase->IDNestCnt;
  29.     SysBase->IDNestCnt=-1;
  30.     list=&SysBase->TaskReady;
  31.     me=(struct Task *)list->lh_Head;
  32.     list->lh_Head=me->tc_Node.ln_Succ;
  33.     me->tc_Node.ln_Succ->ln_Pred=(struct Node *)list;
  34.     SysBase->ThisTask=me;
  35.     me->tc_State=TS_RUN;    
  36.     SysBase->IDNestCnt=me->tc_IDNestCnt;
  37.     if(me->tc_Flags&TF_LAUNCH)
  38.         me->tc_Launch();
  39.     sp=me->tc_SPReg;
  40.     if(me->tc_Flags&TF_EXCEPT)
  41.     {
  42.         Disable();
  43.         Exception();
  44.         Enable();
  45.     }
  46. }
  47.